Currently, a variety of Platform-as-a-Service (PaaS) offerings exist that include software and/or hardware facilities for facilitating the execution of web applications in a cloud computing environment (the “cloud”). Cloud computing is a computing paradigm in which a customer pays a “cloud provider” to execute a program on computer hardware owned and/or controlled by the cloud provider. It is common for cloud providers to make virtual machines hosted on its computer hardware available to customers for this purpose.
The cloud provider typically provides an interface that a customer can use to requisition virtual machines and associated resources such as processors, storage, and network services, etc., as well as an interface a customer can use to install and execute the customer's program on the virtual machines that the customer requisitions, together with additional software on which the customer's program depends. For some such programs, this additional software can include software components, such as a kernel and an operating system, and/or middleware and a framework. Customers that have installed and are executing their programs “in the cloud” typically communicate with the executing program from remote geographic locations using Internet protocols.
PaaS offerings typically facilitate deployment of web applications without the cost and complexity of buying and managing the underlying hardware and software and provisioning hosting capabilities, providing the facilities to support the complete life cycle of building and delivering web application and service entirely available from the Internet. Typically, these facilities operate as one or more virtual machines (VMs) running on top of a hypervisor in a host server.
Current PaaS offerings allow customers to build their own custom applications either by writing code (application development) or by composition (e.g. gears, add-ons, plug-ins, etc). One problem encountered may be difficulty in building and deploying a new application on the PaaS offering. Some customers may not have enough technical know-how to easily accomplish this end product. For instance, to build and deploy an application on a PaaS system, the customer should know what components to build the application with, where to obtain these components, how to add the components to the PaaS platform, and how to configure the application on the PaaS platform. Furthermore, current PaaS offerings do not provide options for a pre-configured application that can be easily deployed and run by a customer without the customer's involvement in the build and deployment process.